{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 61,
   "id": "initial_id",
   "metadata": {
    "collapsed": true,
    "ExecuteTime": {
     "end_time": "2023-12-26T06:47:59.352070200Z",
     "start_time": "2023-12-26T06:47:59.223795800Z"
    }
   },
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "import jieba\n",
    "import matplotlib.pyplot as plt\n",
    "from sklearn.feature_extraction.text import CountVectorizer\n",
    "from sklearn.naive_bayes import MultinomialNB\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "outputs": [],
   "source": [
    "data = pd.read_csv(\"D:\\\\data\\\\朴素贝叶斯评论情感分析.csv\",encoding=\"gbk\")"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2023-12-26T06:47:59.692135500Z",
     "start_time": "2023-12-26T06:47:59.232324900Z"
    }
   },
   "id": "2c6d519c5b5ec1e5"
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "outputs": [
    {
     "data": {
      "text/plain": "    Unnamed: 0                                                 内容  评价\n0            0                                     从编程小白的角度看，入门极佳  好评\n1            1                                  很好的入门书，简洁全面，适合小白。  好评\n2            2                           讲解全面，许多小细节都有顾及，撒个小项目受益匪浅  好评\n3            3                                前半部分讲概念深入浅出，要言不烦，很赞  好评\n4            4                                   看了一遍还是不会写，有个概念而已  差评\n5            5                               中规中矩的教科书，零基础的看了依旧看不懂  差评\n6            6                           内容太浅显，个人认为不适合有其他语音编程基础的人  差评\n7            7                                               破书一本  差评\n8            8                         适合完完全全的小白读，有其他语音经验的可以去看别的书  差评\n9            9                                         基础只是写的挺好的！  好评\n10          10                                                太基础  差评\n11          11                                   啰嗦，适合完全没有编程经验的小白  差评\n12          12                                           真的真的不建议买  差评\n13          13  太难受力，这破显卡壳太大了，挡住了，根本装不下，不过这快递和服务真好，至少有防静电袋，装it...  好评\n14          14  很好用，一点就亮，信号很好。把前置USB的给蓝牙供电了，反正用不到。开网页速度很快哦。后续有...  好评\n15          15  效果很好，就是位置跟显卡有点接触，得加个显卡支架就行了。wifi质量还行，打APEX有时候有...  好评\n16          16  网速很慢，正常连网线十几mb，用这个才两三mb，和手机信号差远了，为了测试我还把路由器放在主...  差评\n17          17  蓝牙正常，发的wifi驱动用不了，问客服一句需要等10分钟左右才会回复，专业性几乎为0，等了...  差评\n18          18  网速就相当一个300m无线网卡！还不如买ubs接口的无线网卡还方便点，写个12000m出来纯...  差评\n19          19  结实稳定性：购物很满意，质量也好，稳固性好。 直观感受：爬桌子写字很舒服，桌面也宽。外观材质...  好评\n20          20                      酒好喝，入口很顺滑，有水果的香味，醒酒30分钟饮用正正好！  好评\n21          21                                              不要，退了  差评\n22          22                                                 垃圾  差评\n23          23                                            回复太慢了！！  差评",
      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>Unnamed: 0</th>\n      <th>内容</th>\n      <th>评价</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>0</td>\n      <td>从编程小白的角度看，入门极佳</td>\n      <td>好评</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>1</td>\n      <td>很好的入门书，简洁全面，适合小白。</td>\n      <td>好评</td>\n    </tr>\n    <tr>\n      <th>2</th>\n      <td>2</td>\n      <td>讲解全面，许多小细节都有顾及，撒个小项目受益匪浅</td>\n      <td>好评</td>\n    </tr>\n    <tr>\n      <th>3</th>\n      <td>3</td>\n      <td>前半部分讲概念深入浅出，要言不烦，很赞</td>\n      <td>好评</td>\n    </tr>\n    <tr>\n      <th>4</th>\n      <td>4</td>\n      <td>看了一遍还是不会写，有个概念而已</td>\n      <td>差评</td>\n    </tr>\n    <tr>\n      <th>5</th>\n      <td>5</td>\n      <td>中规中矩的教科书，零基础的看了依旧看不懂</td>\n      <td>差评</td>\n    </tr>\n    <tr>\n      <th>6</th>\n      <td>6</td>\n      <td>内容太浅显，个人认为不适合有其他语音编程基础的人</td>\n      <td>差评</td>\n    </tr>\n    <tr>\n      <th>7</th>\n      <td>7</td>\n      <td>破书一本</td>\n      <td>差评</td>\n    </tr>\n    <tr>\n      <th>8</th>\n      <td>8</td>\n      <td>适合完完全全的小白读，有其他语音经验的可以去看别的书</td>\n      <td>差评</td>\n    </tr>\n    <tr>\n      <th>9</th>\n      <td>9</td>\n      <td>基础只是写的挺好的！</td>\n      <td>好评</td>\n    </tr>\n    <tr>\n      <th>10</th>\n      <td>10</td>\n      <td>太基础</td>\n      <td>差评</td>\n    </tr>\n    <tr>\n      <th>11</th>\n      <td>11</td>\n      <td>啰嗦，适合完全没有编程经验的小白</td>\n      <td>差评</td>\n    </tr>\n    <tr>\n      <th>12</th>\n      <td>12</td>\n      <td>真的真的不建议买</td>\n      <td>差评</td>\n    </tr>\n    <tr>\n      <th>13</th>\n      <td>13</td>\n      <td>太难受力，这破显卡壳太大了，挡住了，根本装不下，不过这快递和服务真好，至少有防静电袋，装it...</td>\n      <td>好评</td>\n    </tr>\n    <tr>\n      <th>14</th>\n      <td>14</td>\n      <td>很好用，一点就亮，信号很好。把前置USB的给蓝牙供电了，反正用不到。开网页速度很快哦。后续有...</td>\n      <td>好评</td>\n    </tr>\n    <tr>\n      <th>15</th>\n      <td>15</td>\n      <td>效果很好，就是位置跟显卡有点接触，得加个显卡支架就行了。wifi质量还行，打APEX有时候有...</td>\n      <td>好评</td>\n    </tr>\n    <tr>\n      <th>16</th>\n      <td>16</td>\n      <td>网速很慢，正常连网线十几mb，用这个才两三mb，和手机信号差远了，为了测试我还把路由器放在主...</td>\n      <td>差评</td>\n    </tr>\n    <tr>\n      <th>17</th>\n      <td>17</td>\n      <td>蓝牙正常，发的wifi驱动用不了，问客服一句需要等10分钟左右才会回复，专业性几乎为0，等了...</td>\n      <td>差评</td>\n    </tr>\n    <tr>\n      <th>18</th>\n      <td>18</td>\n      <td>网速就相当一个300m无线网卡！还不如买ubs接口的无线网卡还方便点，写个12000m出来纯...</td>\n      <td>差评</td>\n    </tr>\n    <tr>\n      <th>19</th>\n      <td>19</td>\n      <td>结实稳定性：购物很满意，质量也好，稳固性好。 直观感受：爬桌子写字很舒服，桌面也宽。外观材质...</td>\n      <td>好评</td>\n    </tr>\n    <tr>\n      <th>20</th>\n      <td>20</td>\n      <td>酒好喝，入口很顺滑，有水果的香味，醒酒30分钟饮用正正好！</td>\n      <td>好评</td>\n    </tr>\n    <tr>\n      <th>21</th>\n      <td>21</td>\n      <td>不要，退了</td>\n      <td>差评</td>\n    </tr>\n    <tr>\n      <th>22</th>\n      <td>22</td>\n      <td>垃圾</td>\n      <td>差评</td>\n    </tr>\n    <tr>\n      <th>23</th>\n      <td>23</td>\n      <td>回复太慢了！！</td>\n      <td>差评</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
     },
     "execution_count": 63,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2023-12-26T06:47:59.713123200Z",
     "start_time": "2023-12-26T06:47:59.256336300Z"
    }
   },
   "id": "618c167ebd7c9b2f"
  },
  {
   "cell_type": "markdown",
   "source": [
    "# 2 数据处理\n",
    "## 2.1 取出内容列，用于后面分析"
   ],
   "metadata": {
    "collapsed": false
   },
   "id": "a1f01d21d2e62457"
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "outputs": [
    {
     "data": {
      "text/plain": "0                                        从编程小白的角度看，入门极佳\n1                                     很好的入门书，简洁全面，适合小白。\n2                              讲解全面，许多小细节都有顾及，撒个小项目受益匪浅\n3                                   前半部分讲概念深入浅出，要言不烦，很赞\n4                                      看了一遍还是不会写，有个概念而已\n5                                  中规中矩的教科书，零基础的看了依旧看不懂\n6                              内容太浅显，个人认为不适合有其他语音编程基础的人\n7                                                  破书一本\n8                            适合完完全全的小白读，有其他语音经验的可以去看别的书\n9                                            基础只是写的挺好的！\n10                                                  太基础\n11                                     啰嗦，适合完全没有编程经验的小白\n12                                             真的真的不建议买\n13    太难受力，这破显卡壳太大了，挡住了，根本装不下，不过这快递和服务真好，至少有防静电袋，装it...\n14    很好用，一点就亮，信号很好。把前置USB的给蓝牙供电了，反正用不到。开网页速度很快哦。后续有...\n15    效果很好，就是位置跟显卡有点接触，得加个显卡支架就行了。wifi质量还行，打APEX有时候有...\n16    网速很慢，正常连网线十几mb，用这个才两三mb，和手机信号差远了，为了测试我还把路由器放在主...\n17    蓝牙正常，发的wifi驱动用不了，问客服一句需要等10分钟左右才会回复，专业性几乎为0，等了...\n18    网速就相当一个300m无线网卡！还不如买ubs接口的无线网卡还方便点，写个12000m出来纯...\n19    结实稳定性：购物很满意，质量也好，稳固性好。 直观感受：爬桌子写字很舒服，桌面也宽。外观材质...\n20                        酒好喝，入口很顺滑，有水果的香味，醒酒30分钟饮用正正好！\n21                                                不要，退了\n22                                                   垃圾\n23                                              回复太慢了！！\nName: 内容, dtype: object"
     },
     "execution_count": 64,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "content = data[\"内容\"]\n",
    "content"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2023-12-26T06:47:59.722134800Z",
     "start_time": "2023-12-26T06:47:59.266606Z"
    }
   },
   "id": "596af655f82efb66"
  },
  {
   "cell_type": "markdown",
   "source": [
    "## 2.2 把评价中的好评核差评转换为数字"
   ],
   "metadata": {
    "collapsed": false
   },
   "id": "eb202d6a63bbfaea"
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "outputs": [
    {
     "data": {
      "text/plain": "    Unnamed: 0                                                 内容  评价   评分\n0            0                                     从编程小白的角度看，入门极佳  好评  1.0\n1            1                                  很好的入门书，简洁全面，适合小白。  好评  1.0\n2            2                           讲解全面，许多小细节都有顾及，撒个小项目受益匪浅  好评  1.0\n3            3                                前半部分讲概念深入浅出，要言不烦，很赞  好评  1.0\n4            4                                   看了一遍还是不会写，有个概念而已  差评  NaN\n5            5                               中规中矩的教科书，零基础的看了依旧看不懂  差评  NaN\n6            6                           内容太浅显，个人认为不适合有其他语音编程基础的人  差评  NaN\n7            7                                               破书一本  差评  NaN\n8            8                         适合完完全全的小白读，有其他语音经验的可以去看别的书  差评  NaN\n9            9                                         基础只是写的挺好的！  好评  1.0\n10          10                                                太基础  差评  NaN\n11          11                                   啰嗦，适合完全没有编程经验的小白  差评  NaN\n12          12                                           真的真的不建议买  差评  NaN\n13          13  太难受力，这破显卡壳太大了，挡住了，根本装不下，不过这快递和服务真好，至少有防静电袋，装it...  好评  1.0\n14          14  很好用，一点就亮，信号很好。把前置USB的给蓝牙供电了，反正用不到。开网页速度很快哦。后续有...  好评  1.0\n15          15  效果很好，就是位置跟显卡有点接触，得加个显卡支架就行了。wifi质量还行，打APEX有时候有...  好评  1.0\n16          16  网速很慢，正常连网线十几mb，用这个才两三mb，和手机信号差远了，为了测试我还把路由器放在主...  差评  NaN\n17          17  蓝牙正常，发的wifi驱动用不了，问客服一句需要等10分钟左右才会回复，专业性几乎为0，等了...  差评  NaN\n18          18  网速就相当一个300m无线网卡！还不如买ubs接口的无线网卡还方便点，写个12000m出来纯...  差评  NaN\n19          19  结实稳定性：购物很满意，质量也好，稳固性好。 直观感受：爬桌子写字很舒服，桌面也宽。外观材质...  好评  1.0\n20          20                      酒好喝，入口很顺滑，有水果的香味，醒酒30分钟饮用正正好！  好评  1.0\n21          21                                              不要，退了  差评  NaN\n22          22                                                 垃圾  差评  NaN\n23          23                                            回复太慢了！！  差评  NaN",
      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>Unnamed: 0</th>\n      <th>内容</th>\n      <th>评价</th>\n      <th>评分</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>0</td>\n      <td>从编程小白的角度看，入门极佳</td>\n      <td>好评</td>\n      <td>1.0</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>1</td>\n      <td>很好的入门书，简洁全面，适合小白。</td>\n      <td>好评</td>\n      <td>1.0</td>\n    </tr>\n    <tr>\n      <th>2</th>\n      <td>2</td>\n      <td>讲解全面，许多小细节都有顾及，撒个小项目受益匪浅</td>\n      <td>好评</td>\n      <td>1.0</td>\n    </tr>\n    <tr>\n      <th>3</th>\n      <td>3</td>\n      <td>前半部分讲概念深入浅出，要言不烦，很赞</td>\n      <td>好评</td>\n      <td>1.0</td>\n    </tr>\n    <tr>\n      <th>4</th>\n      <td>4</td>\n      <td>看了一遍还是不会写，有个概念而已</td>\n      <td>差评</td>\n      <td>NaN</td>\n    </tr>\n    <tr>\n      <th>5</th>\n      <td>5</td>\n      <td>中规中矩的教科书，零基础的看了依旧看不懂</td>\n      <td>差评</td>\n      <td>NaN</td>\n    </tr>\n    <tr>\n      <th>6</th>\n      <td>6</td>\n      <td>内容太浅显，个人认为不适合有其他语音编程基础的人</td>\n      <td>差评</td>\n      <td>NaN</td>\n    </tr>\n    <tr>\n      <th>7</th>\n      <td>7</td>\n      <td>破书一本</td>\n      <td>差评</td>\n      <td>NaN</td>\n    </tr>\n    <tr>\n      <th>8</th>\n      <td>8</td>\n      <td>适合完完全全的小白读，有其他语音经验的可以去看别的书</td>\n      <td>差评</td>\n      <td>NaN</td>\n    </tr>\n    <tr>\n      <th>9</th>\n      <td>9</td>\n      <td>基础只是写的挺好的！</td>\n      <td>好评</td>\n      <td>1.0</td>\n    </tr>\n    <tr>\n      <th>10</th>\n      <td>10</td>\n      <td>太基础</td>\n      <td>差评</td>\n      <td>NaN</td>\n    </tr>\n    <tr>\n      <th>11</th>\n      <td>11</td>\n      <td>啰嗦，适合完全没有编程经验的小白</td>\n      <td>差评</td>\n      <td>NaN</td>\n    </tr>\n    <tr>\n      <th>12</th>\n      <td>12</td>\n      <td>真的真的不建议买</td>\n      <td>差评</td>\n      <td>NaN</td>\n    </tr>\n    <tr>\n      <th>13</th>\n      <td>13</td>\n      <td>太难受力，这破显卡壳太大了，挡住了，根本装不下，不过这快递和服务真好，至少有防静电袋，装it...</td>\n      <td>好评</td>\n      <td>1.0</td>\n    </tr>\n    <tr>\n      <th>14</th>\n      <td>14</td>\n      <td>很好用，一点就亮，信号很好。把前置USB的给蓝牙供电了，反正用不到。开网页速度很快哦。后续有...</td>\n      <td>好评</td>\n      <td>1.0</td>\n    </tr>\n    <tr>\n      <th>15</th>\n      <td>15</td>\n      <td>效果很好，就是位置跟显卡有点接触，得加个显卡支架就行了。wifi质量还行，打APEX有时候有...</td>\n      <td>好评</td>\n      <td>1.0</td>\n    </tr>\n    <tr>\n      <th>16</th>\n      <td>16</td>\n      <td>网速很慢，正常连网线十几mb，用这个才两三mb，和手机信号差远了，为了测试我还把路由器放在主...</td>\n      <td>差评</td>\n      <td>NaN</td>\n    </tr>\n    <tr>\n      <th>17</th>\n      <td>17</td>\n      <td>蓝牙正常，发的wifi驱动用不了，问客服一句需要等10分钟左右才会回复，专业性几乎为0，等了...</td>\n      <td>差评</td>\n      <td>NaN</td>\n    </tr>\n    <tr>\n      <th>18</th>\n      <td>18</td>\n      <td>网速就相当一个300m无线网卡！还不如买ubs接口的无线网卡还方便点，写个12000m出来纯...</td>\n      <td>差评</td>\n      <td>NaN</td>\n    </tr>\n    <tr>\n      <th>19</th>\n      <td>19</td>\n      <td>结实稳定性：购物很满意，质量也好，稳固性好。 直观感受：爬桌子写字很舒服，桌面也宽。外观材质...</td>\n      <td>好评</td>\n      <td>1.0</td>\n    </tr>\n    <tr>\n      <th>20</th>\n      <td>20</td>\n      <td>酒好喝，入口很顺滑，有水果的香味，醒酒30分钟饮用正正好！</td>\n      <td>好评</td>\n      <td>1.0</td>\n    </tr>\n    <tr>\n      <th>21</th>\n      <td>21</td>\n      <td>不要，退了</td>\n      <td>差评</td>\n      <td>NaN</td>\n    </tr>\n    <tr>\n      <th>22</th>\n      <td>22</td>\n      <td>垃圾</td>\n      <td>差评</td>\n      <td>NaN</td>\n    </tr>\n    <tr>\n      <th>23</th>\n      <td>23</td>\n      <td>回复太慢了！！</td>\n      <td>差评</td>\n      <td>NaN</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
     },
     "execution_count": 65,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.loc[data.loc[:,\"评价\"] == \"好评\",\"评分\"] = 1\n",
    "data"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2023-12-26T06:47:59.731114200Z",
     "start_time": "2023-12-26T06:47:59.282696400Z"
    }
   },
   "id": "f6a751578372370f"
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "outputs": [
    {
     "data": {
      "text/plain": "    Unnamed: 0                                                 内容  评价   评分\n0            0                                     从编程小白的角度看，入门极佳  好评  1.0\n1            1                                  很好的入门书，简洁全面，适合小白。  好评  1.0\n2            2                           讲解全面，许多小细节都有顾及，撒个小项目受益匪浅  好评  1.0\n3            3                                前半部分讲概念深入浅出，要言不烦，很赞  好评  1.0\n4            4                                   看了一遍还是不会写，有个概念而已  差评  0.0\n5            5                               中规中矩的教科书，零基础的看了依旧看不懂  差评  0.0\n6            6                           内容太浅显，个人认为不适合有其他语音编程基础的人  差评  0.0\n7            7                                               破书一本  差评  0.0\n8            8                         适合完完全全的小白读，有其他语音经验的可以去看别的书  差评  0.0\n9            9                                         基础只是写的挺好的！  好评  1.0\n10          10                                                太基础  差评  0.0\n11          11                                   啰嗦，适合完全没有编程经验的小白  差评  0.0\n12          12                                           真的真的不建议买  差评  0.0\n13          13  太难受力，这破显卡壳太大了，挡住了，根本装不下，不过这快递和服务真好，至少有防静电袋，装it...  好评  1.0\n14          14  很好用，一点就亮，信号很好。把前置USB的给蓝牙供电了，反正用不到。开网页速度很快哦。后续有...  好评  1.0\n15          15  效果很好，就是位置跟显卡有点接触，得加个显卡支架就行了。wifi质量还行，打APEX有时候有...  好评  1.0\n16          16  网速很慢，正常连网线十几mb，用这个才两三mb，和手机信号差远了，为了测试我还把路由器放在主...  差评  0.0\n17          17  蓝牙正常，发的wifi驱动用不了，问客服一句需要等10分钟左右才会回复，专业性几乎为0，等了...  差评  0.0\n18          18  网速就相当一个300m无线网卡！还不如买ubs接口的无线网卡还方便点，写个12000m出来纯...  差评  0.0\n19          19  结实稳定性：购物很满意，质量也好，稳固性好。 直观感受：爬桌子写字很舒服，桌面也宽。外观材质...  好评  1.0\n20          20                      酒好喝，入口很顺滑，有水果的香味，醒酒30分钟饮用正正好！  好评  1.0\n21          21                                              不要，退了  差评  0.0\n22          22                                                 垃圾  差评  0.0\n23          23                                            回复太慢了！！  差评  0.0",
      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>Unnamed: 0</th>\n      <th>内容</th>\n      <th>评价</th>\n      <th>评分</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>0</td>\n      <td>从编程小白的角度看，入门极佳</td>\n      <td>好评</td>\n      <td>1.0</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>1</td>\n      <td>很好的入门书，简洁全面，适合小白。</td>\n      <td>好评</td>\n      <td>1.0</td>\n    </tr>\n    <tr>\n      <th>2</th>\n      <td>2</td>\n      <td>讲解全面，许多小细节都有顾及，撒个小项目受益匪浅</td>\n      <td>好评</td>\n      <td>1.0</td>\n    </tr>\n    <tr>\n      <th>3</th>\n      <td>3</td>\n      <td>前半部分讲概念深入浅出，要言不烦，很赞</td>\n      <td>好评</td>\n      <td>1.0</td>\n    </tr>\n    <tr>\n      <th>4</th>\n      <td>4</td>\n      <td>看了一遍还是不会写，有个概念而已</td>\n      <td>差评</td>\n      <td>0.0</td>\n    </tr>\n    <tr>\n      <th>5</th>\n      <td>5</td>\n      <td>中规中矩的教科书，零基础的看了依旧看不懂</td>\n      <td>差评</td>\n      <td>0.0</td>\n    </tr>\n    <tr>\n      <th>6</th>\n      <td>6</td>\n      <td>内容太浅显，个人认为不适合有其他语音编程基础的人</td>\n      <td>差评</td>\n      <td>0.0</td>\n    </tr>\n    <tr>\n      <th>7</th>\n      <td>7</td>\n      <td>破书一本</td>\n      <td>差评</td>\n      <td>0.0</td>\n    </tr>\n    <tr>\n      <th>8</th>\n      <td>8</td>\n      <td>适合完完全全的小白读，有其他语音经验的可以去看别的书</td>\n      <td>差评</td>\n      <td>0.0</td>\n    </tr>\n    <tr>\n      <th>9</th>\n      <td>9</td>\n      <td>基础只是写的挺好的！</td>\n      <td>好评</td>\n      <td>1.0</td>\n    </tr>\n    <tr>\n      <th>10</th>\n      <td>10</td>\n      <td>太基础</td>\n      <td>差评</td>\n      <td>0.0</td>\n    </tr>\n    <tr>\n      <th>11</th>\n      <td>11</td>\n      <td>啰嗦，适合完全没有编程经验的小白</td>\n      <td>差评</td>\n      <td>0.0</td>\n    </tr>\n    <tr>\n      <th>12</th>\n      <td>12</td>\n      <td>真的真的不建议买</td>\n      <td>差评</td>\n      <td>0.0</td>\n    </tr>\n    <tr>\n      <th>13</th>\n      <td>13</td>\n      <td>太难受力，这破显卡壳太大了，挡住了，根本装不下，不过这快递和服务真好，至少有防静电袋，装it...</td>\n      <td>好评</td>\n      <td>1.0</td>\n    </tr>\n    <tr>\n      <th>14</th>\n      <td>14</td>\n      <td>很好用，一点就亮，信号很好。把前置USB的给蓝牙供电了，反正用不到。开网页速度很快哦。后续有...</td>\n      <td>好评</td>\n      <td>1.0</td>\n    </tr>\n    <tr>\n      <th>15</th>\n      <td>15</td>\n      <td>效果很好，就是位置跟显卡有点接触，得加个显卡支架就行了。wifi质量还行，打APEX有时候有...</td>\n      <td>好评</td>\n      <td>1.0</td>\n    </tr>\n    <tr>\n      <th>16</th>\n      <td>16</td>\n      <td>网速很慢，正常连网线十几mb，用这个才两三mb，和手机信号差远了，为了测试我还把路由器放在主...</td>\n      <td>差评</td>\n      <td>0.0</td>\n    </tr>\n    <tr>\n      <th>17</th>\n      <td>17</td>\n      <td>蓝牙正常，发的wifi驱动用不了，问客服一句需要等10分钟左右才会回复，专业性几乎为0，等了...</td>\n      <td>差评</td>\n      <td>0.0</td>\n    </tr>\n    <tr>\n      <th>18</th>\n      <td>18</td>\n      <td>网速就相当一个300m无线网卡！还不如买ubs接口的无线网卡还方便点，写个12000m出来纯...</td>\n      <td>差评</td>\n      <td>0.0</td>\n    </tr>\n    <tr>\n      <th>19</th>\n      <td>19</td>\n      <td>结实稳定性：购物很满意，质量也好，稳固性好。 直观感受：爬桌子写字很舒服，桌面也宽。外观材质...</td>\n      <td>好评</td>\n      <td>1.0</td>\n    </tr>\n    <tr>\n      <th>20</th>\n      <td>20</td>\n      <td>酒好喝，入口很顺滑，有水果的香味，醒酒30分钟饮用正正好！</td>\n      <td>好评</td>\n      <td>1.0</td>\n    </tr>\n    <tr>\n      <th>21</th>\n      <td>21</td>\n      <td>不要，退了</td>\n      <td>差评</td>\n      <td>0.0</td>\n    </tr>\n    <tr>\n      <th>22</th>\n      <td>22</td>\n      <td>垃圾</td>\n      <td>差评</td>\n      <td>0.0</td>\n    </tr>\n    <tr>\n      <th>23</th>\n      <td>23</td>\n      <td>回复太慢了！！</td>\n      <td>差评</td>\n      <td>0.0</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
     },
     "execution_count": 66,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.loc[data.loc[:,\"评价\"] == \"差评\",\"评分\"] = 0\n",
    "data"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2023-12-26T06:47:59.803071700Z",
     "start_time": "2023-12-26T06:47:59.289124600Z"
    }
   },
   "id": "c98acdee92543fc5"
  },
  {
   "cell_type": "markdown",
   "source": [
    "# 选择停用词"
   ],
   "metadata": {
    "collapsed": false
   },
   "id": "f9f8264091bfed46"
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "outputs": [],
   "source": [
    "stopwords = []\n",
    "with open(\"E:/pythonProject/停用词.txt\",encoding=\"utf-8\") as f:\n",
    "    lines = f.readlines()\n",
    "    # print(lines)\n",
    "    for tmp in lines:\n",
    "        line = tmp.strip()\n",
    "        stopwords.append(line)\n",
    "# 去重 \n",
    "stopwords = list(set(stopwords))"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2023-12-26T06:47:59.806069800Z",
     "start_time": "2023-12-26T06:47:59.307356300Z"
    }
   },
   "id": "1c05c86971d4b32e"
  },
  {
   "cell_type": "markdown",
   "source": [
    "# 把内容处理，转化成标准化格式"
   ],
   "metadata": {
    "collapsed": false
   },
   "id": "8ba02e7a20b93840"
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "outputs": [
    {
     "data": {
      "text/plain": "['从,编程,小白,的,角度看,，,入门,极佳',\n '很,好,的,入门,书,，,简洁,全面,，,适合,小白,。',\n '讲解,全面,，,许多,小,细节,都,有,顾及,，,撒个,小,项目,受益匪浅',\n '前半部,分讲,概念,深入浅出,，,要言不烦,，,很赞',\n '看,了,一遍,还是,不会,写,，,有个,概念,而已',\n '中规中矩,的,教科书,，,零,基础,的,看,了,依旧,看不懂',\n '内容,太,浅显,，,个人,认为,不,适合,有,其他,语音,编程,基础,的,人',\n '破书,一本',\n '适合,完完全全,的,小白读,，,有,其他,语音,经验,的,可以,去,看,别的,书',\n '基础,只是,写,的,挺,好,的,！',\n '太,基础',\n '啰嗦,，,适合,完全,没有,编程,经验,的,小白',\n '真的,真的,不,建议,买',\n '太难受,力,，,这破显,卡壳,太大,了,，,挡住,了,，,根本,装不下,，,不过,这,快递,和,服务,真,好,，,至少,有,防静电,袋,，,装,itx,的,一定,注意,一下,哈,，,不管怎样,，,好评,好评,(,づ, ,●,─,●, ,),づ',\n '很,好,用,，,一点,就亮,，,信号,很,好,。,把,前置,USB,的,给,蓝牙,供电,了,，,反正,用,不到,。,开,网页,速度,很快,哦,。,后续,有,问题,再,追评,。',\n '效果,很,好,，,就是,位置,跟,显卡,有点,接触,，,得,加个,显卡,支架,就行了,。,wifi,质量,还,行,，,打,APEX,有时候,有点,网卡,，,感觉,不是,网卡,的,问题,，,跟,有线,效果,差不多',\n '网速,很,慢,，,正常,连,网线,十几,mb,，,用,这个,才,两三,mb,，,和,手机信号,差远了,，,为了,测试,我,还,把,路由器,放在,主机,旁边,试,的,，,也,就是,看个,视频,的,程度,吧,，,没有,预期,效果,好',\n '蓝牙,正常,，,发,的,wifi,驱动,用,不了,，,问,客服,一句,需要,等,10,分钟,左右,才,会,回复,，,专业性,几乎,为,0,，,等,了,七八分钟,回复,让,我,插,显卡,槽,。,最后,让,我,退回去,，,还,能,说,什么,呢,？',\n '网速,就,相当,一个,300m,无线,网卡,！,还,不如,买,ubs,接口,的,无线,网卡,还,方便,点,，,写个,12000m,出来,纯纯,误导,别人,！',\n '结实,稳定性,：,购物,很,满意,，,质量,也好,，,稳固,性好,。, ,直观,感受,：,爬,桌子,写字,很,舒服,，,桌面,也,宽,。,外观,材质,：,挺,好看,的, ,和,我,卧室,的,实,木地板,颜色,很配, ,结实,稳定性,：,承重,也,挺不错, ,但是,不能,放,太重,的,东西',\n '酒,好喝,，,入口,很,顺滑,，,有,水果,的,香味,，,醒酒,30,分钟,饮用,正,正好,！',\n '不要,，,退,了',\n '垃圾',\n '回复,太慢,了,！,！']"
     },
     "execution_count": 68,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "commentList = []\n",
    "for tmp in content:\n",
    "    # 把每句话用jieba切成一个个词\n",
    "    segLit = jieba.cut(tmp,cut_all=False) #cut_all是否切割所有\n",
    "    # print(segLit)\n",
    "    segStr = \",\".join(segLit)\n",
    "    # print(segStr)\n",
    "    commentList.append(segStr)\n",
    "commentList"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2023-12-26T06:47:59.807088Z",
     "start_time": "2023-12-26T06:47:59.324336300Z"
    }
   },
   "id": "879fabc0f345f2ee"
  },
  {
   "cell_type": "markdown",
   "source": [
    "# 统计词频"
   ],
   "metadata": {
    "collapsed": false
   },
   "id": "dd6551e5c1f8f08"
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python312\\Lib\\site-packages\\sklearn\\feature_extraction\\text.py:408: UserWarning: Your stop_words may be inconsistent with your preprocessing. Tokenizing the stop words generated tokens ['lex', '①①', '①②', '①③', '①④', '①⑤', '①⑥', '①⑦', '①⑧', '①⑨', '①ａ', '①ｂ', '①ｃ', '①ｄ', '①ｅ', '①ｆ', '①ｇ', '①ｈ', '①ｉ', '①ｏ', '②①', '②②', '②③', '②④', '②⑤', '②⑥', '②⑦', '②⑧', '②⑩', '②ａ', '②ｂ', '②ｄ', '②ｅ', '②ｆ', '②ｇ', '②ｈ', '②ｉ', '②ｊ', '③①', '③⑩', '③ａ', '③ｂ', '③ｃ', '③ｄ', '③ｅ', '③ｆ', '③ｇ', '③ｈ', '④ａ', '④ｂ', '④ｃ', '④ｄ', '④ｅ', '⑤ａ', '⑤ｂ', '⑤ｄ', '⑤ｅ', '⑤ｆ', '１２', 'ｌｉ', 'ｚｘｆｉｔｌ'] not in stop_words.\n",
      "  warnings.warn(\n"
     ]
    },
    {
     "data": {
      "text/plain": "array([[0, 0, 0, ..., 0, 0, 0],\n       [0, 0, 0, ..., 0, 0, 0],\n       [0, 0, 0, ..., 0, 0, 0],\n       ...,\n       [0, 0, 0, ..., 0, 0, 0],\n       [0, 0, 0, ..., 0, 0, 0],\n       [0, 0, 0, ..., 0, 0, 0]], dtype=int64)"
     },
     "execution_count": 69,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "con = CountVectorizer(stop_words=stopwords)\n",
    "x = con.fit_transform(commentList)\n",
    "x.toarray()"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2023-12-26T06:47:59.818063200Z",
     "start_time": "2023-12-26T06:47:59.343177900Z"
    }
   },
   "id": "14093c2805e3ac2"
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "outputs": [
    {
     "data": {
      "text/plain": "array(['10', '12000m', '30', '300m', 'apex', 'itx', 'mb', 'ubs', 'usb',\n       'wifi', '一句', '一本', '一遍', '七八分钟', '不到', '专业性', '东西', '两三', '中规中矩',\n       '主机', '位置', '供电', '依旧', '信号', '入口', '入门', '内容', '写个', '写字', '分讲',\n       '分钟', '前半部', '前置', '加个', '十几', '卡壳', '卧室', '反正', '受益匪浅', '后续',\n       '啰嗦', '回复', '垃圾', '基础', '外观', '太大', '太慢', '太重', '太难受', '好喝', '好看',\n       '好评', '完完全全', '客服', '小白', '小白读', '就亮', '就行了', '差远了', '建议', '很快',\n       '很赞', '很配', '快递', '性好', '感受', '感觉', '手机信号', '承重', '挡住', '挺不错',\n       '接口', '接触', '撒个', '支架', '放在', '效果', '教科书', '旁边', '无线', '显卡', '有个',\n       '有时候', '有线', '服务', '木地板', '材质', '极佳', '桌子', '桌面', '概念', '正好', '水果',\n       '没有', '浅显', '测试', '深入浅出', '满意', '直观', '看不懂', '看个', '真的', '破书',\n       '程度', '稳固', '稳定性', '简洁', '纯纯', '细节', '经验', '结实', '编程', '网卡', '网线',\n       '网速', '网页', '至少', '舒服', '蓝牙', '装不下', '要言不烦', '视频', '角度看', '讲解',\n       '语音', '误导', '质量', '购物', '路由器', '这破显', '追评', '退回去', '适合', '速度',\n       '醒酒', '防静电', '项目', '顺滑', '顾及', '预期', '颜色', '饮用', '香味', '驱动'],\n      dtype=object)"
     },
     "execution_count": 70,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "con.get_feature_names_out()"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2023-12-26T06:47:59.819062500Z",
     "start_time": "2023-12-26T06:47:59.356390400Z"
    }
   },
   "id": "473a175c008acb6e"
  },
  {
   "cell_type": "markdown",
   "source": [
    "# 准备训练集和测试集"
   ],
   "metadata": {
    "collapsed": false
   },
   "id": "91cdc0780ba8a469"
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "outputs": [],
   "source": [
    "# 前十行当训练集\n",
    "x_train = x.toarray()[:10,:]\n",
    "y_train = data[\"评价\"][:10]"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2023-12-26T06:47:59.820062600Z",
     "start_time": "2023-12-26T06:47:59.361598200Z"
    }
   },
   "id": "9a10df7174f9ca27"
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "outputs": [],
   "source": [
    "# 后十个当测试集\n",
    "x_test = x.toarray()[10:,:]\n",
    "y_test = data[\"评价\"].values[10:] #data[\"评价\"][10:]"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2023-12-26T06:47:59.820062600Z",
     "start_time": "2023-12-26T06:47:59.485853800Z"
    }
   },
   "id": "b6aec36a3e5bc793"
  },
  {
   "cell_type": "markdown",
   "source": [
    "# 模型训练：贝叶斯算法分类器"
   ],
   "metadata": {
    "collapsed": false
   },
   "id": "b60997575f0a125c"
  },
  {
   "cell_type": "code",
   "execution_count": 79,
   "outputs": [],
   "source": [
    "mb = MultinomialNB(alpha=2) #拉普拉修/Lidstone平滑系数\n",
    "mb.fit(x_train,y_train)\n",
    "y_pre = mb.predict(x_test)"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2023-12-26T06:48:46.922588300Z",
     "start_time": "2023-12-26T06:48:46.897316900Z"
    }
   },
   "id": "106093090be8bb46"
  },
  {
   "cell_type": "code",
   "execution_count": 80,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "预测值= ['差评' '差评' '差评' '差评' '差评' '差评' '差评' '差评' '差评' '差评' '差评' '好评' '差评' '差评']\n",
      "真实值= ['差评' '差评' '差评' '好评' '好评' '好评' '差评' '差评' '差评' '好评' '好评' '差评' '差评' '差评']\n"
     ]
    }
   ],
   "source": [
    "print(\"预测值=\",y_pre)\n",
    "print(\"真实值=\",y_test) "
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2023-12-26T06:48:47.944231400Z",
     "start_time": "2023-12-26T06:48:47.925732100Z"
    }
   },
   "id": "e0feafebbdd51f5d"
  },
  {
   "cell_type": "code",
   "execution_count": 81,
   "outputs": [
    {
     "data": {
      "text/plain": "0.5714285714285714"
     },
     "execution_count": 81,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "mb.score(x_test,y_test)"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2023-12-26T06:48:48.905438600Z",
     "start_time": "2023-12-26T06:48:48.898715700Z"
    }
   },
   "id": "6eca31bd5db5c35a"
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "outputs": [],
   "source": [],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2023-12-26T06:47:59.821061300Z",
     "start_time": "2023-12-26T06:47:59.487852900Z"
    }
   },
   "id": "a3a354c892fd7481"
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "outputs": [],
   "source": [],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2023-12-26T06:47:59.821061300Z",
     "start_time": "2023-12-26T06:47:59.488847500Z"
    }
   },
   "id": "a93120720012ffae"
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "outputs": [],
   "source": [],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2023-12-26T06:47:59.822060800Z",
     "start_time": "2023-12-26T06:47:59.489444500Z"
    }
   },
   "id": "42417f3b76b28136"
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "outputs": [],
   "source": [],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2023-12-26T06:47:59.822060800Z",
     "start_time": "2023-12-26T06:47:59.489444500Z"
    }
   },
   "id": "43a6a51c876e4bca"
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "outputs": [],
   "source": [],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2023-12-26T06:47:59.822060800Z",
     "start_time": "2023-12-26T06:47:59.490185400Z"
    }
   },
   "id": "37a3629d79117895"
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
